added samples
[windows-sources.git] / sdk / samples / all in on code / Visual Studio 2008 / CSASPNETDataListImageGallery / Default.aspx.cs
blobb442c4ddd753749d7e2849ee25b330bfcb711173
1 /****************************** Module Header ******************************\
2 Module Name: Default.aspx
3 Project: CSASPNETDataListImageGallery
4 Copyright (c) Microsoft Corporation.
6 This module is used to show how to do a simple image gallery with a thumbnail
7 navigation bar using DataList. User can select a thumbnail image from DataList
8 to view the bigger one in main image. This can be implemented in some personal
9 space site, online shopping site and etc.
12 This source is subject to the Microsoft Public License.
13 See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL.
14 All other rights reserved.
16 THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
17 EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
18 WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
19 \***************************************************************************/
21 using System;
22 using System.Web.UI.WebControls;
23 using System.IO;
24 using System.Data;
26 namespace CSASPNETDataListImageGallery
28 public partial class _Default : System.Web.UI.Page
30 // Set page size.
31 int _pageSize = 5;
33 // Property for current page index.
34 public int Page_Index
36 get { return (int)ViewState["_Page_Index"]; }
37 set { ViewState["_Page_Index"] = value; }
40 // Property for total page count.
41 public int Page_Count
43 get { return (int)ViewState["_Page_Count"]; }
44 set { ViewState["_Page_Count"] = value; }
47 protected void Page_Load(object sender, EventArgs e)
49 if (!Page.IsPostBack)
51 // Initial page index.
52 Page_Index = 0;
54 // Set page count.
55 if ((ImageCount() % _pageSize) == 0)
57 Page_Count = ImageCount() / _pageSize;
58 if (Page_Count == 0)
60 lbnFirstPage.Enabled = false;
61 lbnPrevPage.Enabled = false;
62 lbnNextPage.Enabled = false;
63 lbnLastPage.Enabled = false;
66 else
68 Page_Count = (ImageCount() / _pageSize + 1);
71 // Bind DataList.
72 DataList1.DataSource = BindGrid();
73 DataList1.DataBind();
75 // Disable two buttons for the initial page.
76 lbnFirstPage.Enabled = false;
77 lbnPrevPage.Enabled = false;
81 // Return the data source for DataList.
82 protected DataTable BindGrid()
84 // Get all image paths.
85 DirectoryInfo di = new DirectoryInfo(Server.MapPath("/Image/"));
86 FileInfo[] fi = di.GetFiles();
88 // Save all paths to the DataTable as the data source.
89 DataTable dt = new DataTable();
90 DataColumn dc = new DataColumn("Url", typeof(System.String));
91 dt.Columns.Add(dc);
92 int lastindex = 0;
93 if (Page_Count == 0 || Page_Index == Page_Count - 1)
95 lastindex = ImageCount();
97 else
99 lastindex = Page_Index * _pageSize + 5;
101 for (int i = Page_Index * _pageSize; i < lastindex; i++)
103 DataRow dro = dt.NewRow();
104 dro[0] = fi[i].Name;
105 dt.Rows.Add(dro);
107 return dt;
110 // Return total number of images.
111 protected int ImageCount()
113 DirectoryInfo di = new DirectoryInfo(Server.MapPath("/Image/"));
114 FileInfo[] fi = di.GetFiles();
115 return fi.GetLength(0);
118 // Handle the navigation button event.
119 public void Page_OnClick(Object sender, CommandEventArgs e)
121 if (e.CommandName.Equals("first"))
123 Page_Index = 0;
124 lbnFirstPage.Enabled = false;
125 lbnPrevPage.Enabled = false;
126 lbnNextPage.Enabled = true;
127 lbnLastPage.Enabled = true;
129 else if (e.CommandName.Equals("prev"))
131 Page_Index -= 1;
132 if (Page_Index == 0)
134 lbnFirstPage.Enabled = false;
135 lbnPrevPage.Enabled = false;
136 lbnNextPage.Enabled = true;
137 lbnLastPage.Enabled = true;
139 else
141 lbnFirstPage.Enabled = true;
142 lbnPrevPage.Enabled = true;
143 lbnNextPage.Enabled = true;
144 lbnLastPage.Enabled = true;
147 else if (e.CommandName.Equals("next"))
149 Page_Index += 1;
150 if (Page_Index == Page_Count - 1)
152 lbnFirstPage.Enabled = true;
153 lbnPrevPage.Enabled = true;
154 lbnNextPage.Enabled = false;
155 lbnLastPage.Enabled = false;
157 else
159 lbnFirstPage.Enabled = true;
160 lbnPrevPage.Enabled = true;
161 lbnNextPage.Enabled = true;
162 lbnLastPage.Enabled = true;
165 else if (e.CommandName.Equals("last"))
167 Page_Index = Page_Count - 1;
168 lbnFirstPage.Enabled = true;
169 lbnPrevPage.Enabled = true;
170 lbnNextPage.Enabled = false;
171 lbnLastPage.Enabled = false;
174 DataList1.SelectedIndex = 0;
175 DataList1.DataSource = BindGrid();
176 DataList1.DataBind();
177 Image1.ImageUrl
178 = ((Image)DataList1.Items[0].FindControl("imgBtn")).ImageUrl;
181 // Handle the thumbnail image selecting event.
182 protected void imgBtn_Click(object sender, EventArgs e)
184 ImageButton ib = (ImageButton)sender;
185 Image1.ImageUrl = ib.ImageUrl;
186 DataList1.SelectedIndex = Convert.ToInt32(ib.CommandArgument);